from zhipuai import ZhipuAI
import re

api_key = "4956db3da95d43eab77efa6937882679.Xm27NhBWZPJE3ORb"
client = ZhipuAI(api_key=api_key)

response = client.chat.completions.create(model="glm-4",
                                          messages=[{"role":"system","content":"你是一位高级程序员，可以编写任意的代码，但是只需要输出编写的代码就可以了，不用输出其他除了代码外的任何信息"},
                                                    {"role":"user","content":"请帮我定义一个python函数代码，用来输出'hello world'字符串,请在函数的编写过程中，在函数内部加入中文编写的详细函数说明文档"}])
code = response.choices[0].message.content
#print(code)


with open(r"F:\ai\03大模型开发实战\08 低代码智能开发平台案例实践\helloworld.md","w",encoding="utf8") as f:
    f.write(code)

def extract_code(s):
    """
    如果输入的字符串s是一个包含Python代码的Markdown格式字符串，提取出代码部分。
    否则，返回原字符串。
    :param s: 输入的字符串
    :return: 提取出的代码部分，或原字符串。
    """
    # 判断字符串是否是Markdown格式
    if '```python' in s or 'Python' in s or 'PYTHON' in s:
        code_start = s.find('def')
        code_end = s.find('```\n',code_start)
        return s[code_start:code_end]
    else:
        # 如果字符串不是Markdown格式，返回原字符串
        code = s
    return code

code_python = extract_code(code)
print(code_python)
print("============================================")

with open(r"F:\ai\03大模型开发实战\08 低代码智能开发平台案例实践\helloworld.py","w",encoding="utf8") as f:
    f.write(code_python)


with open(r"F:\ai\03大模型开发实战\08 低代码智能开发平台案例实践\helloworld.py","r",encoding="utf8") as f:
    code_content = f.read()
    print(code_content)

#exec(code_content)
#print_hello_world()

def extract_function_code(s_python,detail=0):
    """
        函数提取函数，同时执行函数内容，可以选择打印函数信息
    """
    def extract_code_python(s_python):
        """
        如果输入的字符串s是一个包含Python代码的Markdown格式字符串，提取出代码部分。
        否则，返回原字符串。
        :param s: 输入的字符串
        :return: 提取出的代码部分，或原字符串。
        """
        # 判断字符串是否是Markdown格式
        if '```python' in s_python or 'Python' in s_python or 'PYTHON' in s_python:
            code_start = s_python.find('def')
            code_end = s_python.find('```\n',code_start)
            code = s_python[code_start:code_end]
        else:
            # 如果字符串不是Markdown格式，返回原字符串
            code = s_python
        return code

    # 提取代码字符串
    code = extract_code_python(s_python)
    # 提取函数名称
    match = re.search(r"def (\w+)",code)
    print(match.group(0))
    print(match.group(1))
    function_name = match.group(1)
    # 将函数写入本地
    with open(r"F:\ai\03大模型开发实战\08 低代码智能开发平台案例实践\%s.py" % function_name,"w",encoding="utf8") as f:
        f.write(code)

    # 执行该函数
    try:
        exec(code,globals())
    except Exception as e:
        print("An error occurred while executing the code:")
        print(e)

    # 打印函数名称
    if detail == 0:
        print(function_name)

    if detail == 1:
        with open(r"F:\ai\03大模型开发实战\08 低代码智能开发平台案例实践\%s.py" % function_name,"r",encoding="utf8") as f:
            content = f.read()
            print(content)


extract_function_code(code,0)
